package modelo;

import java.util.Date;
import java.util.Vector;


public class Factura {
	
		private int nroFactura;
		private static int proximoNumero;
		private float totalFacturar;
		private float totalSms;
		private float totalDatos;
		private float totalVoz;
		private int periodo;
		private Usuario user;
	//	private Date fecha;
		private int anio;
		//private Vector<ItemFactura> itemFactura;
		
		
		public int getProximoNumero(){
			 return ++proximoNumero;
		}
		
		public Factura (Usuario user, int periodo, int anio){
			nroFactura = getProximoNumero();
			this.user = user;
			this.periodo= periodo;
		//	this.fecha = fecha;
//			fecha = new da
			this.anio = anio;
			liquidar();
		}
		

//		public void agregarConsumos(){
//			Linea linea = user.getLineaPrincipal();
//			Vector<LineaAdicional> lineasAdic = user.getLineasAdicioneles();
//			
//			
//			linea.getConsumos();
//			
//		}
		
		
		public int getNroFactura() {
			return nroFactura;
		}

		public void setNroFactura(int nroFactura) {
			this.nroFactura = nroFactura;
		}

		public float getTotalFacturar() {
			return totalFacturar;
		}

		public void setTotalFacturar(float totalFacturar) {
			this.totalFacturar = totalFacturar;
		}

		public float getTotalSms() {
			return totalSms;
		}

		public void setTotalSms(float totalSms) {
			this.totalSms = totalSms;
		}

		public float getTotalDatos() {
			return totalDatos;
		}

		public void setTotalDatos(float totalDatos) {
			this.totalDatos = totalDatos;
		}

		public float getTotalVoz() {
			return totalVoz;
		}

		public void setTotalVoz(float totalVoz) {
			this.totalVoz = totalVoz;
		}

		public int getPeriodo() {
			return periodo;
		}

		public void setPeriodo(int periodo) {
			this.periodo = periodo;
		}

		

		public void liquidar(){
			Linea linea = user.getLineaPrincipal();
			
			Vector<LineaAdicional> lineasAdic = user.getLineasAdicioneles();
			totalFacturar = 0;
			totalSms = 0;
			totalDatos = 0;
			totalVoz = 0;
			
			for (int i = 0;i<lineasAdic.size();i++){
					totalFacturar = totalFacturar + lineasAdic.elementAt(i).calcularConsumosTotal(periodo, anio);
					totalDatos = totalDatos + lineasAdic.elementAt(i).calcularConsumoDatos(periodo, anio);
					totalSms = totalSms + lineasAdic.elementAt(i).calcularConsumoSms(periodo, anio);
					totalVoz = totalVoz + lineasAdic.elementAt(i).calcularConsumoVoz(periodo, anio);
				
			}
			if (!(linea.getPlan() instanceof Prepago)){
			totalFacturar = totalFacturar + linea.calcularConsumosTotal(periodo, anio);
			totalSms = totalSms + linea.calcularConsumoSms(periodo, anio);
			totalVoz = totalVoz + linea.calcularConsumoVoz(periodo, anio);
			totalDatos = totalDatos + linea.calcularConsumoDatos(periodo, anio);
			}

			
		}
		
		public boolean hayConsumo(){
			if (totalFacturar == 0){
				return false;
			}else
				return true;
		}
	
//		private int nro;
//		private Usuario usuario;
//		private Vector<Consumo> consumos;
//		private Date periodoDesde;
//		private static int contadorFacturas=1;
//		
//		
//		
//		public Factura(Usuario usuario, Date periodoDesde,Date periodoHasta) {
//			
//			this.usuario = usuario;
//			this.periodoDesde = periodoDesde;
//			this.nro=contadorFacturas++;
//			this.consumos=new Vector<Consumo>();
//		}
//
//		public int getNro() {
//			return nro;
//		}
//
//		public void setNro(int nro) {
//			this.nro = nro;
//		}
//
//		public Usuario getUsuario() {
//			return usuario;
//		}
//
//		public void setUsuario(Usuario usuario) {
//			this.usuario = usuario;
//		}
//
//		public float getTotal() {
//			float total=0;
//			
//			for(int x=0;x<consumos.size();x++){
//				total+=consumos.elementAt(x).getCantidadConsumida();
//			}
//			
//			return total;
//		}
//		
//		public float getTotalVoz() {
//			float total=0;
//			
//			for(int x=0;x<consumos.size();x++){
//				if(consumos.elementAt(x).getServicio().getNombre().equals("VOZ"))
//					total+=consumos.elementAt(x).getCantidadConsumida()*consumos.elementAt(x).getServicio().getPrecio();
//			}
//			
//			return total;
//		}
//		
//		public float getTotalDatos() {
//			float total=0;
//			
//			for(int x=0;x<consumos.size();x++){
//				if(consumos.elementAt(x).getServicio().getNombre().equals("DATOS"))
//					total+=consumos.elementAt(x).getCantidadConsumida()*consumos.elementAt(x).getServicio().getPrecio();
//			}
//			
//			return total;
//		}
//		
//		public float getTotalSMS() {
//			float total=0;
//			
//			for(int x=0;x<consumos.size();x++){
//				if(consumos.elementAt(x).getServicio().getNombre().equals("SMS"))
//					total+=consumos.elementAt(x).getCantidadConsumida()*consumos.elementAt(x).getServicio().getPrecio();
//			}
//			
//			return total;
//		}
//		
//		
//
//		public Date getPeriodoDesde() {
//			return periodoDesde;
//		}
//
//		public void setPeriodoDesde(Date periodoDesde) {
//			this.periodoDesde = periodoDesde;
//		}
//
//		public void addConsumo(Consumo c){
//			this.consumos.add(c);
//		}
//		
//		public Vector toVector(){
//			Vector v = new Vector();
//			v.add(this.getNro());
//			v.add(this.getUsuario().getNombre());
//			v.add(this.getUsuario().getApellido());
//			v.add(this.getTotalSMS());
//			v.add(this.getTotalVoz());
//			v.add(this.getTotalDatos());
//			v.add(this.getTotal());
//			v.add(periodoDesde.getDate()+"/"+periodoDesde.getMonth()+"/"+periodoDesde.getYear());
//			return v;
//		}

		
		public Vector toVector(){
		Vector v = new Vector();
		v.add(nroFactura);
		v.add(user.getNombre());
		v.add(user.getApellido());
		v.add(this.totalSms);
		v.add(this.totalDatos);
		v.add(this.totalVoz);
		v.add(this.totalFacturar);
		v.add(periodo);
		
//		v.add(this.getNro());
//		v.add(this.getUsuario().getNombre());
//		v.add(this.getUsuario().getApellido());
//		v.add(this.getTotalSMS());
//		v.add(this.getTotalVoz());
//		v.add(this.getTotalDatos());
//		v.add(this.getTotal());
//		v.add(periodoDesde.getDate()+"/"+periodoDesde.getMonth()+"/"+periodoDesde.getYear());
		return v;
	}
		
		
		
}
